//动态规划

var find = function(coins,amount){
    if(!amount){
        return 0;
    }
    let dp = Array(amount+1).fill(Infinity)
    dp[0] = 0
    for(let i=0;i<coins.length;i++){
        for(let j=coins[i];j<=amount;j++){
            // 比如说当前j为11，选择的硬币大小为5,
            // dp[j-coins[i]]+1  表示当前目标数减去当前硬币大小 得到的就是dp[]就是之前的另一个目标所需的硬币数而加上这个1就相当于等于dp[j]
            dp[j] = Math.min(dp[j-coins[i]] + 1,dp[j])//为什么+1？是因为选择到了当前硬币数，然后在加上一枚当前的硬币

            // 构成当前金额所需要的硬币数等于，构成（当前金额值减去当前硬币值）所需要的硬币数 加上一个当前的硬币
        }
    }
    return dp[amount] === Infinity ? -1 : dp[amount]
}